﻿using System;
using System.Data;
using System.Data.SqlClient;
using Onshi.POS.AccesoDatos.Interfaces;

namespace Onshi.POS.AccesoDatos
{
    public class ServicioDatosPromocion : ServicioDatosBase, IServicioDatosPromocion
    {
        #region Constructores

        public ServicioDatosPromocion()
            : base()
        {
        }

        #endregion

        #region Metodos

        public DataSet Promociones_DevolverTodos()
        {
            try
            {
                var cm = new SqlCommand("Promociones_DevolverTodos", Conexion);
                cm.CommandType = CommandType.StoredProcedure;
                var da = new SqlDataAdapter(cm);
                var ds = new DataSet();
                da.Fill(ds);
                return ds;
            }
            catch (Exception ex)
            {
                throw ex;
            }
            finally
            {
                if (Conexion.State == ConnectionState.Open)
                    Conexion.Close();
            }
        }

        public DataSet Promociones_DevolverPorId(Int32 idPromocion)
        {
            try
            {
                var cm = new SqlCommand("Promociones_DevolverPorId", Conexion);
                cm.CommandType = CommandType.StoredProcedure;
                cm.Parameters.Add(new SqlParameter("@IdPromocion", idPromocion));
                var da = new SqlDataAdapter(cm);
                var ds = new DataSet();
                da.Fill(ds);
                return ds;
            }
            catch (Exception ex)
            {
                throw ex;
            }
            finally
            {
                if (Conexion.State == ConnectionState.Open)
                    Conexion.Close();
            }
        }

        public Int32 Promociones_Insertar(Int32 idTipoFormaPago, String nombre, DateTime fechaDesde, DateTime fechaHasta, Boolean lunes, Boolean martes, Boolean miercoles, Boolean jueves, Boolean viernes, Boolean sabado, Boolean domingo, String observacion, Int64 cantidad, TimeSpan horaDesde, TimeSpan horaHasta, Decimal descuento)
        {
            try
            {
                var cm = new SqlCommand("Promociones_Insertar", Conexion);
                cm.CommandType = CommandType.StoredProcedure;
                cm.Parameters.Add(new SqlParameter("@idTipoFormaPago", idTipoFormaPago));
                cm.Parameters.Add(new SqlParameter("@Nombre", nombre));
                cm.Parameters.Add(new SqlParameter("@fechaDesde", fechaDesde));
                cm.Parameters.Add(new SqlParameter("@fechaHasta", fechaHasta));
                cm.Parameters.Add(new SqlParameter("@lunes", lunes));
                cm.Parameters.Add(new SqlParameter("@martes", martes));
                cm.Parameters.Add(new SqlParameter("@miercoles", miercoles));
                cm.Parameters.Add(new SqlParameter("@jueves", jueves));
                cm.Parameters.Add(new SqlParameter("@viernes", viernes));
                cm.Parameters.Add(new SqlParameter("@sabado", sabado));
                cm.Parameters.Add(new SqlParameter("@domingo", domingo));
                cm.Parameters.Add(new SqlParameter("@observacion", observacion));
                cm.Parameters.Add(new SqlParameter("@cantidad", cantidad));
                cm.Parameters.Add(new SqlParameter("@horaDesde", horaDesde));
                cm.Parameters.Add(new SqlParameter("@horaHasta", horaHasta));
                cm.Parameters.Add(new SqlParameter("@descuento", descuento));
                Conexion.Open();
                return Convert.ToInt32(cm.ExecuteScalar());
            }
            catch (Exception ex)
            {
                throw ex;
            }
            finally
            {
                if (Conexion.State == ConnectionState.Open)
                    Conexion.Close();
            }
        }

        public void Promociones_Modificar(Int32 idPromocion, Int32 idTipoFormaPago, String nombre, DateTime fechaDesde, DateTime fechaHasta, Boolean lunes, Boolean martes, Boolean miercoles, Boolean jueves, Boolean viernes, Boolean sabado, Boolean domingo, String observacion, Int64 cantidad, TimeSpan horaDesde, TimeSpan horaHasta, Decimal descuento)
        {
            try
            {
                var cm = new SqlCommand("Promociones_Modificar", Conexion);
                cm.CommandType = CommandType.StoredProcedure;
                cm.Parameters.Add(new SqlParameter("@idPromocion", idPromocion));
                cm.Parameters.Add(new SqlParameter("@idTipoFormaPago", idTipoFormaPago));
                cm.Parameters.Add(new SqlParameter("@Nombre", nombre));
                cm.Parameters.Add(new SqlParameter("@fechaDesde", fechaDesde));
                cm.Parameters.Add(new SqlParameter("@fechaHasta", fechaHasta));
                cm.Parameters.Add(new SqlParameter("@lunes", lunes));
                cm.Parameters.Add(new SqlParameter("@martes", martes));
                cm.Parameters.Add(new SqlParameter("@miercoles", miercoles));
                cm.Parameters.Add(new SqlParameter("@jueves", jueves));
                cm.Parameters.Add(new SqlParameter("@viernes", viernes));
                cm.Parameters.Add(new SqlParameter("@sabado", sabado));
                cm.Parameters.Add(new SqlParameter("@domingo", domingo));
                cm.Parameters.Add(new SqlParameter("@observacion", observacion));
                cm.Parameters.Add(new SqlParameter("@cantidad", cantidad));
                cm.Parameters.Add(new SqlParameter("@horaDesde", horaDesde));
                cm.Parameters.Add(new SqlParameter("@horaHasta", horaHasta));
                cm.Parameters.Add(new SqlParameter("@descuento", descuento));
                Conexion.Open();
                cm.ExecuteNonQuery();
            }
            catch (Exception ex)
            {
                throw ex;
            }
            finally
            {
                if (Conexion.State == ConnectionState.Open)
                    Conexion.Close();
            }
        }

        public void Promociones_Eliminar(Int32 idPromocion)
        {
            try
            {
                var cm = new SqlCommand("Promociones_Eliminar", Conexion);
                cm.CommandType = CommandType.StoredProcedure;
                cm.Parameters.Add(new SqlParameter("@IdPromocion", idPromocion));
                Conexion.Open();
                cm.ExecuteNonQuery();
            }
            catch (Exception ex)
            {
                throw ex;
            }
            finally
            {
                if (Conexion.State == ConnectionState.Open)
                    Conexion.Close();
            }
        }

        #endregion
    }
}
